package com.nextel.project;

import com.nextel.gui.dialog.Splash;
import com.nextel.project.agps.ControlAgps;
import com.nextel.project.cliente.ControlCliente;
import com.nextel.project.cobranza.ControlCobranza;
import com.nextel.project.dao.HttpControl;
import com.nextel.project.devolucion.ControlDevolucion;
import com.nextel.project.canje.ControlCanje;
import com.nextel.project.pedido.ControlPedido;
import com.nextel.project.stock.ControlStock;
import com.nextel.project.usuario.ControlUsuario;
import com.nextel.project.usuario.bean.ParametrosBean;
import com.nextel.ui.OEditableGrid;
import com.nextel.ui.OHandset;
import pe.com.nextel.idioma.IdiomaManager;
import pe.com.nextel.main.ActionListener;
import pe.com.nextel.main.MainMidlet;
import pe.com.nextel.util.math.MathUtil;
import pe.com.nextel.idioma.ListenerIdioma;
import pe.com.nextel.idioma.IdiomaManager;

public class Midlet extends MainMidlet implements ActionListener, ListenerIdioma {
    
    public Midlet() {
         
        ControlUsuario.getInstance().setAction(this);
        
        //seteamos el control al http
        frmStatusHttp.setFrmHttpListener(HttpControl.getInstance());
        // asignamos el gauge al control usuario para visualizar que descarga
        ControlUsuario.getInstance().setXmlListener(frmStatusHttp);
        ControlUsuario.getInstance().xmlListenerPrincipal = frmStatusHttp;

         
        initialize();
        
    }
    
    /**
     * Se inicializa las clases complementarias
     * <b>el splah </b><b>los reportes kpi</b>
     */
    private void initialize() {
        
        
        try {
            setInfoJAD();

            conectarIdiomaServer();
            
 
            
        } catch (Exception e) {
            e.printStackTrace();
            exitBussiness();
        }
        
    }

        private void conectarIdiomaServer() throws Exception{

            IdiomaManager.getInstance().listener = this;

            if(!IdiomaManager.getInstance().isDatos()){

                getMensajeHttp().setUrl(Configuracion.URL_IDIOMA);

                System.out.println("url =" + Configuracion.URL_IDIOMA);

                // conectar al servidor
                IdiomaManager.getInstance().xmlListener = (frmStatusHttp);

                HttpControl.getInstance().setProceso(HttpControl.getInstance().PRCHTTP_IDIOMA);
                iniciarConexionHTTP();
            }else
            {
                IdiomaManager.getInstance().levantarIdiomaMemoria();
                respuesta( );
            }
    }

    /**
     * Obtenemos los datos del jad
     * @throws java.lang.Exception
     */
    private void setInfoJAD() throws Exception {
        
        String DIR_SERVER = this.getAppProperty("IP_SERVER");
        
        ParametrosBean parametro = new ParametrosBean();
        parametro.setIp(DIR_SERVER);
        
        // verificamos si no se existe una ip guardada
        // para no actualizarla
        ParametrosBean parametro1 = ControlUsuario.getInstance().rmsParametros.obtenerParametro();
        if (parametro1 == null) {
            ControlUsuario.getInstance().grabarParametros(parametro);
            Configuracion.updateParameters(parametro.getIp());
        } else {
            //actualizamos la memoria
            Configuracion.updateParameters(parametro1.getIp());
        }
    }
    
    public void inicializarControlAction(){
        
        String activar ="1";
         Configuracion.Moneda  = ControlUsuario.getInstance().currentUsuario.Moneda;
         Configuracion.SimboloDecimal = ControlUsuario.getInstance().currentUsuario.Simbolo_Decimal;
         OEditableGrid.SIMBOLO_DECIMAL = Configuracion.SimboloDecimal.charAt(0);
         MathUtil.SIMBOLO_DECIMAL = Configuracion.SimboloDecimal.charAt(0);
         

        ControlCliente.getInstance().setAction(this);
        
        if(activar.equals(ControlUsuario.getInstance().currentUsuario.pedido)){
            ControlPedido.getInstance().setAction(this);
        }
        
        if(activar.equals(ControlUsuario.getInstance().currentUsuario.cobranza)){
            ControlCobranza.getInstance().setAction(this);
        }
        
        if(activar.equals(ControlUsuario.getInstance().currentUsuario.canje)){
            ControlCanje.getInstance().setAction(this);
        }
        
        if(activar.equals(ControlUsuario.getInstance().currentUsuario.devolucion)){
            ControlDevolucion.getInstance().setAction(this);
        }
 
        if(activar.equals(ControlUsuario.getInstance().currentUsuario.gps)){
          //  System.out.println("Activado");
            ControlAgps.getInstance().initializeAGPS(this.getAppProperty("TIME_GPS"));
        }
        
//        if(activar.equals(ControlUsuario.getInstance().currentUsuario.eficiencia)){
             ControlPedido.getInstance().procesarKpi();
//        }
        
        if(activar.equals(ControlUsuario.getInstance().currentUsuario.stock_linea)){
            ControlStock.getInstance().setAction(this);
        } 

         
    }

    public synchronized  void respuesta() {

        ControlUsuario.getInstance().setAction(this);
        ControlUsuario.getInstance().setXmlListener(frmStatusHttp);

        String  rutaSplash = "/splash.PNG";
        
        rutaSplash = this.getAppProperty("RUTA_SPLASH");
       
        Splash splash = new Splash(ControlUsuario.getInstance().mvcUsuario.showScreen(), rutaSplash, this.getAppProperty("MIDlet-Version"));
        ControlUsuario.getInstance().setCurrent( ControlUsuario.getInstance().mvcUsuario.showScreen());
        OHandset.getDisplay().setCurrent(splash);

        System.gc();


    }
}

